import 'package:get/get.dart';
import 'package:getx_scaffold/getx_scaffold.dart';
import 'points_mall_state.dart';
import '../../../core/repository/default_api.dart';
import '../../../core/config/api_config.dart';

class PointsMallLogic extends GetxController {
  final state = PointsMallState();
  final _api = DefaultApi();

  @override
  void onInit() {
    super.onInit();
    _initTaskList();
    _loadProducts();
  }

  /// 初始化任务列表
  void _initTaskList() {
    state.taskList.value = [
      {
        'id': 1,
        'title': '每日佩戴',
        'subtitle': '奖励昨日身体活力值',
        'icon': 'vector',
        'progress': 29,
        'maxProgress': 100,
        'reward': null,
        'status': '去收集', // 去收集、收集中、已收集
      },
      {
        'id': 2,
        'title': '完成健康计划',
        'subtitle': '完成计划奖励XXX活力值',
        'icon': 'complete',
        'progress': 29,
        'maxProgress': 100,
        'reward': 5000,
        'status': '收集中',
      },
      {
        'id': 3,
        'title': '每周查看身体周报',
        'subtitle': '奖励XXX活力值',
        'icon': 'check_week',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '已收集',
      },
      {
        'id': 4,
        'title': '每月查看身体月报',
        'subtitle': '奖励XXX活力值',
        'icon': 'check_month',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '收集中',
      },
      {
        'id': 5,
        'title': '获得勋章',
        'subtitle': '奖励XXX活力值',
        'icon': 'get',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '收集中',
      },
      {
        'id': 6,
        'title': '完善个人信息',
        'subtitle': '完善个人信息奖励xx积分',
        'icon': 'personal',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '已收集',
      },
      {
        'id': 7,
        'title': '首次加入或组建家庭圈',
        'subtitle': '奖励XXX积分',
        'icon': 'circle',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '去收集',
      },
      {
        'id': 8,
        'title': '新建一个计划（一次）',
        'subtitle': '奖励XXX积分',
        'icon': 'create_plan',
        'progress': null,
        'maxProgress': null,
        'reward': null,
        'status': '已收集',
      },
    ];
  }

  /// 切换其他任务显示状态
  void toggleOtherTasks() {
    state.showOtherTasks.value = !state.showOtherTasks.value;
  }

  /// 加载产品列表
  Future<void> _loadProducts() async {
    try {
      final response = await _api.queryShopProductsGet<Map<String, dynamic>>(
        pageNum: 1,
        pageSize: 10,
        orderByColumn: 'sortOrder',
        isAsc: 'desc',
        isShowLoading: true,
      );

      if (response != null && response['code'] == 200) {
        final rows = response['rows'] as List<dynamic>?;
        if (rows != null) {
          state.productList.value = rows.map((item) {
            // 获取第一张图片URL
            String? imageUrl;
            if (item['imageUrl'] != null && item['imageUrl'].toString().isNotEmpty) {
              final images = item['imageUrl'].toString().split(',');
              if (images.isNotEmpty) {
                imageUrl = images[0];
                // 如果是相对路径，添加基础URL
                if (!imageUrl.startsWith('http')) {
                  imageUrl = '${ApiConfig.baseUrl}$imageUrl';
                }
              }
            }

            return {
              'id': item['id'],
              'title': item['name'] ?? '',
              'points': item['pointsPrice'] ?? 0,
              'price': item['originalPrice'] ?? 0,
              'image': imageUrl,
              'description': item['description'] ?? '',
              'stockQuantity': item['stockQuantity'] ?? 0,
              'maxPerUser': item['maxPerUser'] ?? 0,
              'status': item['status'] ?? 0,
            };
          }).toList();
        }
      }
    } catch (e) {
      print('加载产品列表失败: $e');
    }
  }

  /// 点击任务
  void onTaskTap(Map<String, dynamic> task) {
    // TODO: 根据任务类型跳转到对应页面或执行对应操作
    Toast.show( '点击了任务: ${task['title']}');
  }

  
  /// 点击产品
  void onProductTap(Map<String, dynamic> product) {
    // 跳转到商品详情页面
    Get.toNamed('/product-detail', arguments: {'productId': product['id']});
  }
}
